// miniprogram/pages/dbtest/index.js
Page({

  data: {
    n: 0,  // 第一页
    tempFiles: [],
  },
  onLoad: function (options) {
    const db = wx.cloud.database()
    // db.collection('zhihu-day').get().then(res => {
    //   console.log('知乎', res)
    // })

  },

  // 查询中国GDP在3000亿元以上的前10个城市，并要求不显示_id字段，显示城市名、所在省份以及GDP，并按照GDP大小降序排列。
  getCity() {
    let n = this.data.n
    const db = wx.cloud.database()
    const _ = db.command     //获取数据库查询及更新操作符
    db.collection('china')
      .where({  //查询的条件操作符where
        gdp: _.gt(3000) //查询筛选条件，gt表示字段需大于指定值。
      })
      .field({             //显示哪些字段
        _id: false,         //默认显示_id，这个隐藏
        city: true,
        province: true,
        gdp: true
      })
      .orderBy('gdp', 'desc')  //排序方式，降序排列
      .skip(n * 10)                 //跳过多少个记录（常用于分页），0表示这里不跳过
      .limit(10)               //限制显示多少条记录，这里为10
      .get()
      .then(res => {
        console.log('china', res)
        if (res.errMsg = "collection.get:ok") {
          this.setData({
            n: n + 1
          })
        }
      })
      .catch((err) => {
        console.log('失败', err)
      })
  },
  // 北上广深
  getCity2() {
    const db = wx.cloud.database()
    const _ = db.command

    db.collection('china')
      .where({
        city: _.in(['北京', '上海', '广州', '深圳'])
      })
      .get()
      .then(res => {
        console.log(res)
      })
      .catch(err => {

      })
  },
  addDaily() {
    const db = wx.cloud.database()
    db.collection('zhihu-day')
      .add({

      })
  },
  //聚合查询，
  aggregate() {
    const db = wx.cloud.database()
    const _ = db.command
    const $ = db.command.aggregate

    db.collection('china').aggregate() //发起聚合操作
      .match({       //类似于where，对记录进行筛选
        gdp: _.gt(1500)
      })
      .project({     //类似于field，在这里可以新增字段    
        _id: false,         //默认显示_id，这个隐藏
        city: true,
        province: true,
        gdp: true,
      })
      .sort({        //类似于orderBy
        gdp: 1,
      })
      .skip(0)      //类似于skip
      .limit(1000)     //类似于limit，不填默认是20，没有上限
      .end()        //注意，end标志聚合操作的完成    
      .then(res => console.log('聚合数据', res))
      .catch(err => console.error(err))


    db.collection('china').aggregate()
      .project({
        _id: 0,  //用0或false来去掉_id字段，_id就不会显示啦
        city: 1, //用1或true来
        gdp: 1,
        "常住人口": '$reg_pop',
        "人均GDP": $.divide([$.multiply(['$gdp', 10000]), '$reg_pop'])
      })
      .end()
      .then(res => console.log('res', res))
      .catch(err => console.error(err))
  },
  where() {
    const db = wx.cloud.database()
    const _ = db.command

    db.collection('china')
      .where({
        gdp: _.gt(1500)
      })
      .field({
        _id: false,
        city: true,
        gdp: true,
        province: true
      })
      .orderBy('gdp', 'asc')
      .skip(0)
      .limit(1000)
      .get()
      .then(res => console.log('where', res))
      .catch(err => console.log(err))
  },
  // 我们想了解每个省的最大的城市GDP值或最少的城市常住人口值，也就是我们把城市按照省份来分组，再使用累计器操作符里的max和min来按省份取数据：
  group() {
    const db = wx.cloud.database()
    const _ = db.command
    const $ = db.command.aggregate

    db.collection('china').aggregate()
      .group({
        _id: "$province",
        maxgdp: $.max("$gdp"),
        minresident: $.min("$resident_pop")
      })
      .end()
      .then(res => console.log('group', res))
      .catch((err) => {
        console.log(err)
      })


    db.collection("china").aggregate()
      .sort({
        gdp: -1
      })
      .group({
        _id: "$province",
        maxgdp: $.first("$gdp"),
        city: $.first("$city")
      })
      .end()
      .then(res => console.log(res))
      .catch(err => console.error(err))
  },
  chooseFile: function () {
    let that = this
    wx.chooseMessageFile({
      count: 5,
      type: 'file',
      success(res) {
        console.log('ssssssss', res)
        let tempFiles = res.tempFiles
        that.setData({
          tempFiles
        })
      }
    })
  },

})